<!DOCTYPE html>
<!--
     SPDX-License-Identifier: CC-BY-SA-4.0
     SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC.
-->
<!-- Page last generated 2025-02-20 03:16:15 +0000 -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Porting seL4 to a new platform | seL4 docs</title>

    <!-- Our stylesheet and theme stylesheet.  Contains bootstrap. -->
    <link rel="stylesheet" href="/assets/css/style.css" type="text/css">
    <!-- Font awesome -->
    <link href="https://use.fontawesome.com/releases/v5.0.8/css/all.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
    <!-- Pygments syntax highlighting  -->
    <link rel="stylesheet" href="/assets/css/highlighting/trac.css" type="text/css">
    <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"><script defer data-domain="docs.sel4.systems"
	    src="https://analytics.sel4.systems/js/script.js"></script></head>

  <body class="container-fluid">

    



<header>
  <ul class="row menu">
    <li class="col-xs-12 col-md-2" >
            <a href="https://sel4.systems" class="skip-icon">
              <img class="img-responsive" src="/assets/logo-text-white.svg" alt="seL4 logo" />
            </a>
    </li>
    <li class="col-xs-12 col-md-10 menu">
      <nav aria-label="Banner links">
        <h2><a href="/Resources" />Resources</h2>
        <h2><a href="/processes" />Contributing</a></h2>
        <h2><a href="/projects" />Projects</h2>
        <h2><a href="/Tutorials" />Tutorials</h2>
        <iframe title="DuckDuckGo search bar" src="https://duckduckgo.com/search.html?site=docs.sel4.systems&prefill=Search%20sel4.systems" style="overflow:hidden;margin-bottom:10px; padding:0;height:40px;float:right;border-width: 0px"></iframe>
      </nav>
    </li>
  </ul>
  <div class="clear"></div>
  
<div class="breadcrumbs bootstrap hidden-sm-down">
  <nav class="sel-breadcrumb" aria-label="Breadcrumb" >
    <ol class=" list-unstyled" vocab="http://schema.org/" typeof="BreadcrumbList">
      
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/">
              <span property="name"><b>seL4 Docs</b></span>
            </a>
            <meta property="position" content="1" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/projects/">
              <span property="name"><b>Projects</b></span>
            </a>
            <meta property="position" content="2" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/projects/sel4/">
              <span property="name"><b>The seL4 microkernel</b></span>
            </a>
            <meta property="position" content="3" />
        </li>
      
        

        
          <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <span property="name">Porting seL4 to a new platform</span>
            <meta property="position" content="4" /></li>
          
    </ol>
  </nav>
  <nav class="sel-version" aria-label="Current Versions">
    <ol class="list-unstyled">
      <li class="list-unstyled text-right" style="margin-left:auto; padding:0rem 0rem;">
        Current versions:</li>
      <li class="list-unstyled text-right">
      <a href="/releases/sel4/13.0.0"><b>seL4-13.0.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/microkit/1.4.1"><b>microkit-1.4.1</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/camkes/camkes-3.11.0"><b>camkes-3.11.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/capdl/0.3.0"><b>capDL-0.3.0</b></a></li>
      </ol>
  </nav>
  <div class='clear'></div>
</div>


</header>

    <main>
      <div class="row">
  <div class="hidden-xs col-sm-4 col-md-3 col-lg-2">
    


<div class="sidebar">















    <ul class="nav nav-sidebar">
  
    
    

    
        <li class="active">
            <a class="" href="/projects/sel4/">seL4</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/l4v/">L4.verified</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/camkes/">CAmkES</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/capdl/">CapDL</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/elfloader/">Elfloader</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/buildsystem/">seL4 Buildsystem</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/user_libs/">user_libs</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4runtime/">The seL4 run-time</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4webserver/">seL4webserver</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4-tutorials/">seL4 tutorials</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4bench/">sel4bench</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4test/">seL4Test</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/virtualization/">Virtualization</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/camkes-vm/">camkes-vm</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/dockerfiles/">Dockerfiles</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/docsite/">seL4 Documentation website</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4_tools/">seL4_tools</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/microkit/">Microkit</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/hardware_hacks/">Hardware Hacks</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/rust/">Rust</a>
        </li>
  
    </ul>


</div>

  </div>
  <div class="content col-sm-8 col-md-6 col-lg-7 main">
    <h1 id="porting-sel4-to-a-new-platform">Porting seL4 to a new platform</h1>

<p>This section covers porting seL4 to a new ARM or RISC-V platform. You can check the list of supported seL4 platforms <a href="https://docs.sel4.systems/Hardware/">here</a>.</p>

<h2 id="setup">Setup</h2>

<p>In order to load the seL4 image (via some means) it is important to have a working bootloader.
We tend to use <a href="https://www.denx.de/wiki/U-Boot">U-Boot</a> as it is open source, reliable and supports many different architectures.</p>

<p>There are a variety of ways of loading an seL4 image from U-Boot such as eMMC, TFTP, and USB.</p>

<h3 id="tftp-setup">TFTP setup</h3>

<p>For setting up a TFTP server to transfer images over the network, you can follow the
<a href="https://www.cse.unsw.edu.au/~cs9242/19/project/linux.shtml">UNSW Advanced Operating Systems course guide</a>.</p>

<p>Once you get U-Boot up and running it is a good idea (if the platform is supported) to flash a
Linux image onto the board. This way you can find the correct address to load the image into memory.
This is also useful for debugging, as you can use the FDT file system to dump addresses from a running system.</p>

<p>Once you have found the correct address to load, declare the boot command (where address 0x20000000 as an example):</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">bootcmd</span><span class="o">=</span><span class="s2">"tftpboot 0x20000000 /path/to/image &amp;&amp; go 0x20000000"</span>
saveenv
</code></pre></div></div>

<p>For TFTP, you will also need to set some U-Boot envrionment variables:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>setenv ipaddr &lt;BOARD ADDRESS&gt;
setenv serverip &lt;SERVER ADDRESS&gt;
saveenv
</code></pre></div></div>

<h3 id="emmcsd-card-setup">eMMC/SD card setup</h3>

<p>We can load an image with the following command (using <code class="language-plaintext highlighter-rouge">0x20000000</code> as an example):</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>fatload mmc 0 0x20000000 /path/to/image
</code></pre></div></div>

<p>You can find more details in the <a href="https://docs.u-boot.org/en/latest/usage/cmd/fatload.html">U-Boot documentation</a>.</p>

<h2 id="sel4">seL4</h2>

<p>In order to have a successful port of seL4 to your target ARM or RISC-V platform you will need to go through the following steps.</p>

<h3 id="device-tree">Device Tree</h3>

<p>Device Trees are used by ARM and RISC-V platforms to describe the hardware platform.
seL4 makes use of Device Trees at build time, which is why acquiring a Device Tree Source (DTS)
for your platform is one of the first steps.</p>

<p>seL4 relies on the DTS for the location and size of main memory as well as information
about certain devices used by the kernel such as the timer. In debug mode, seL4 also
makes use of the default serial device for debug output.</p>

<p>Typically the Device Tree Source will be included in the
<a href="https://github.com/torvalds/linux">Linux kernel source</a>, from there you can decompile
the device tree blob (DTB) from building the Linux kernel to get the Device Tree that
Linux uses.</p>

<p>You can compile the Linux Device Tree Sources into a final Device Tree Blob with:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>make <span class="nv">ARCH</span><span class="o">=</span>&lt;arm/arm64/riscv&gt; <span class="nv">CROSS_COMPILE</span><span class="o">=</span>&lt;TOOLCHAIN&gt; defconfig
make <span class="nv">ARCH</span><span class="o">=</span>&lt;arm/arm64/riscv&gt; <span class="nv">CROSS_COMPILE</span><span class="o">=</span>&lt;TOOLCHAIN&gt; dtbs
</code></pre></div></div>

<p>The DTBs can be found in <code class="language-plaintext highlighter-rouge">arch/&lt;ARCH&gt;/boots/dts/</code>.</p>

<p>The following command allows you to decompile the DTB:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dtc <span class="nt">-I</span> dtb <span class="nt">-O</span> dts /path/to/dtb <span class="nt">-o</span> linux.dts
</code></pre></div></div>

<p>It should be noted that you may need to add device nodes depending on what Linux uses
and what is required by seL4. For example, some platforms do not include a node for
main memory in the Linux Device Tree. This is because Linux can get
this information at run-time from a previous bootloader. This is not the case for seL4
as it consumes the Device Tree at build-time.</p>

<p>In the seL4 source, each platform has an overlay DTS that is responsible for dealing
with seL4-specific device nodes. Below is an example
(from the <a href="https://github.com/seL4/seL4/blob/master/src/plat/rockpro64/overlay-rockpro64.dts">ROCKPro64</a>):</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/ {
    chosen {
        seL4,elfloader-devices =
            "serial2",
            &amp;{/psci},
            &amp;{/timer};
        seL4,kernel-devices =
            "serial2",
            &amp;{/interrupt-controller@fee00000},
            &amp;{/timer};
    };
};
</code></pre></div></div>

<p>These overlay files give a good idea of what nodes seL4 requires in the DTS other than
main memory.</p>

<p>You will need to create a similar overlay DTS in <code class="language-plaintext highlighter-rouge">src/plat/&lt;platform&gt;/overlay-&lt;platform&gt;.dts</code>
as part of the platform port.</p>

<h3 id="hardware-generation-script">Hardware generation script</h3>

<p>Depending on your platform and the way the DTS is defined you may need to modify the
<code class="language-plaintext highlighter-rouge">seL4/tools/hardware_gen.py</code> script.</p>

<p>From the above example the ROCKPro64 needed a memory node so that this script could
define working memory. Other gotchas could include interrupt cells, interrupt numbers being
mapped wrongly, or incorrect addresses. Also serial and timer drivers will need to be added
to the kernel if they don’t already exist. You can check this through the DTS device strings
and compare to the <code class="language-plaintext highlighter-rouge">seL4/tools/hardware.yml</code> file.</p>

<p>If needed, add the required drivers in <code class="language-plaintext highlighter-rouge">seL4/src/drivers/</code> and <code class="language-plaintext highlighter-rouge">seL4/include/drivers/</code>.</p>

<h3 id="kernel">Kernel</h3>

<p>You will need to add <code class="language-plaintext highlighter-rouge">seL4/libsel4/sel4_plat_include/&lt;platform&gt;/sel4/plat/api/constants.h</code>.
Depending on your platform, this is either empty or requires defining the value for <code class="language-plaintext highlighter-rouge">seL4_UserTop</code>.
Look in the other platform files for examples similar to your platform.</p>

<p>You will need to add a CMake configuration file for the platform at <code class="language-plaintext highlighter-rouge">kernel/src/plat/&lt;platform&gt;/config.cmake</code>.
It is best to base the contents of this file off of other platforms of the same architecture.</p>

<h2 id="testing-your-sel4-port">Testing your seL4 port</h2>

<p>When you contribute your port to seL4, sel4test must execute successfully and so the next
step to check that your port works would be to get
<a href="https://docs.sel4.systems/projects/sel4test/">the seL4test project</a> working.</p>

<h3 id="elf-loader">ELF-loader</h3>

<p>Before we can run sel4test, we need to have seL4 booting first.</p>

<p>Although we use U-Boot as a bootloader, there are additional steps needed to initialise the
hardware and setup system images before we can boot seL4. This is the purpose of the
<a href="https://docs.sel4.systems/projects/elfloader/">ELF-loader</a>.</p>

<p>The code for the ELF-loader can be found in the <code class="language-plaintext highlighter-rouge">elfloader-tool</code> directory at the root of
the <a href="https://github.com/seL4/seL4_tools">seL4_tools</a> repository.</p>

<p>Depending on your platform, you may have to make changes to the ELF-loader, which is
responsible for loading the kernel and any user-programs. The ELF-loader outputs to the
serial, so needs to be able to access the UART.</p>

<p>On RISC-V, outputting to UART is done via a call to the SBI layer so no changes are necessary.</p>

<p>On ARM, there are a variety of existing UART drivers in <code class="language-plaintext highlighter-rouge">tools/elfloader-tool/src/drivers/uart/</code>.
If the default serial is not supported by any of these drivers, you will have to
provide a simple putchar implementation.</p>

<p>If the system image that is produced by the ELF-loader build system needs be a particular file
format (e.g binary or EFI) or needs to start at a particular physical address, you can
configure the default platform options in <code class="language-plaintext highlighter-rouge">seL4_tools/cmake-tool/helpers/application_settings.cmake</code>.</p>

<h3 id="sel4test">seL4test</h3>

<p>seL4test needs user level serial and timer drivers to run. Add these drivers and the following
files to <a href="https://github.com/seL4/util_libs/tree/master/libplatsupport">libplatsupport</a>
in order to get the test suite running. The directory structure and
files will look something like the following. Some of these files may not have anything in
them but include them anyway to keep the build system happy.</p>

<p>Use the other platforms as examples; generally you will have to configure the timer driver by
reading the manual, it may have its own unique programming sequence and can sometimes be a bit tricky.</p>

<p>If the technical reference manual does not contain enough detail, you may be able to gain more
information by looking at the respective Linux driver for the device. This can be done by searching
for the value of the ‘compatible’ field that is on each device node in a DTS in the Linux source code.</p>

<p>You can find the physical addresses and interrupt numbers for each device in its platform reference
manual and copy them into the right places.</p>

<p><code class="language-plaintext highlighter-rouge">util_libs/libplatsupport/plat_include/&lt;platform&gt;/</code></p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">clock.h</code></li>
  <li><code class="language-plaintext highlighter-rouge">gpio.h</code></li>
  <li><code class="language-plaintext highlighter-rouge">i2c.h</code></li>
  <li><code class="language-plaintext highlighter-rouge">mux.h</code></li>
  <li><code class="language-plaintext highlighter-rouge">serial.h</code></li>
  <li><code class="language-plaintext highlighter-rouge">timer.h</code></li>
</ul>

<p><code class="language-plaintext highlighter-rouge">util_libs/libplatsupport/src/plat/&lt;platform&gt;/</code></p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">chardev.c</code></li>
  <li><code class="language-plaintext highlighter-rouge">ltimer.c</code></li>
  <li><code class="language-plaintext highlighter-rouge">serial.c</code></li>
  <li><code class="language-plaintext highlighter-rouge">timer.c</code></li>
</ul>

<h3 id="sel4test-configurations">sel4test configurations</h3>

<p>The default configuration of seL4 in sel4test is non-MCS, single-core, with no hypervisor mode.</p>

<p>After confirming that the default configuration successfully runs (in both debug and release mode),
it is a good idea to test the more complex configurations with your port as well.</p>

<h3 id="gotchas">Gotchas</h3>

<p>Incorrect address alignment and incorrect memory regions can cause instruction faults. One way to debug this, is
to shorten memory regions in DTS memory nodes to check you are touching the correct area.</p>

<h2 id="contributing">Contributing</h2>

<p>Once you have a working port that passes seL4test, see the guides for [contributing in general]
and <a href="https://docs.sel4.systems/processes/contributing.html">contributing kernel changes</a>.</p>

  </div>







  
  
<div class="sidebar-toc hidden-xs hidden-sm col-md-3 col-lg-3">
  
    <ul class="section-nav">
    	<h2> seL4 </h2> 
        <li>
          
          <a style="" class="" href="/projects/sel4/">
            Documentation homepage
          </a>
        </li>




        <li>
          
          <a style="" class="" href="/projects/sel4/status.html">
            Status
          </a>
        </li>














    
        <h3>Repositories</h3>
    
        <li>
          <a class="" href="https://github.com/seL4/sel4">
            sel4
          </a>
        </li>









<h3>Releases</h3>

    
      <li>
        <a style="" href="/releases/sel4/13.0.0.html">
          seL4 13.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-13.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/12.1.0.html">
          seL4 12.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-12.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/12.0.0.html">
          seL4 12.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-12.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/11.0.0.html">
          seL4 11.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-11.0.0.pdf">manual</a>)
      </li>

    


    


    
      <li>
        <a style="" href="/releases/sel4/10.1.1.html">
          seL4 10.1.1
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-10.1.1.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/10.1.0.html">
          seL4 10.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-10.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/10.0.0.html">
          seL4 10.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-10.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/9.0.1.html">
          seL4 9.0.1
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-9.0.1.pdf">manual</a>)
      </li>

    


    


    
      <li>
        <a style="" href="/releases/sel4/9.0.0.html">
          seL4 9.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-9.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/8.0.0.html">
          seL4 8.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-8.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/7.0.0.html">
          seL4 7.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-7.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/6.0.0.html">
          seL4 6.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-6.0.0.pdf">manual</a>)
      </li>

    


    


    
      <li>
        <a style="" href="/releases/sel4/5.2.0.html">
          seL4 5.2.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-5.2.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/5.1.0.html">
          seL4 5.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-5.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/5.0.0.html">
          seL4 5.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-5.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/4.0.0.html">
          seL4 4.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-4.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.2.0.html">
          seL4 3.2.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.2.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.1.0.html">
          seL4 3.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.0.1.html">
          seL4 3.0.1
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.0.1.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.0.0.html">
          seL4 3.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/2.1.0.html">
          seL4 2.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-2.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/2.0.0.html">
          seL4 2.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-2.0.0.pdf">manual</a>)
      </li>

    


    


    










    </ul>

</div>


</div>

    </main>
    


<footer class="site-footer">

  <h2 class="footer-heading">seL4 docs</h2>

  <div class="footer-col-wrapper">

    <div class="col-md-2">
      



<ul class="social-media-list">
  <li><a href="https://github.com/sel4"><i class="fab fa-github"></i> <span class="username">sel4</span></a></li><li><a href="https://github.com/sel4proj"><i class="fab fa-github"></i> <span class="username">sel4proj</span></a></li>
</ul>

    </div>

    <div class="col-md-8">
      <ul class="list-unstyled">
        <li>
          This site is for displaying seL4 related documentation.  Pull requests are welcome.
        </li>
        
          <li>
            Site last updated: Fri Feb 7 10:17:38 2025 +1100 ee78c8857c
          </li>
          <li>
                Page last updated: Tue Mar 26 09:35:10 2024 +0100 58fc2e87fc
          </li>
        
      </ul>
    </div>
    <div class="col-md-2">
<a href="https://github.com/seL4/docs/blob/master/projects/sel4/porting.md">View page on GitHub</a>
      <br />
      <a href="https://github.com/seL4/docs/edit/master/projects/sel4/porting.md">Edit page on GitHub</a>
      <br />
      <a href="/sitemap">Sitemap</a>
    </div>

  </div>

</footer>

  </body>
</html>
